home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / self / sniff.lha / sniff / Announcement < prev    next >
Text File  |  1993-07-24  |  10KB  |  269 lines

  1. *********************************************************
  2. * Announcement of the C++ Programming Environment Sniff *
  3. *********************************************************
  4.  
  5.  
  6. Walter R. Bischofberger
  7. UBILAB (UBS Informatics Laboratory)
  8. Union Bank of Switzerland
  9. Bahnhofstrasse 45
  10. CH-8021 Zurich/Switzerland
  11. Phone: (0041) 01 236 31 83 (direct)
  12. Fax: (0041) 01 236 46 71 (direct)
  13. Email: bischi@ZH010.ubs.ubs.arcom.ch
  14.  
  15.  
  16. Abstract
  17. ========
  18.  
  19. Sniff is a C++/C programming environment providing browsing, cross-
  20. referencing, design visualization, documentation, and editing 
  21. support. It delegates compilation and debugging to any C++ compiler 
  22. and debugger of choice.
  23.  
  24. The main goal in developing Sniff was to create an efficient 
  25. portable C++ programming environment which makes it possible to edit 
  26. and browse large software systems textually and graphically. Much 
  27. emphasis was laid on runtime and memory efficiency and on a 
  28. comfortable user interface.
  29.  
  30.  
  31. History, Availability, and Future of Sniff
  32. ===========================================
  33.  
  34. Sniff was developed in the research laboratory of the Union Bank of 
  35. Switzerland (UBS) where it has been used on its own development for 
  36. about one year.
  37.  
  38. Two public domain beta releases of Sniff have been available for 
  39. some months. These releases were applied for professional software 
  40. development at several places.
  41.  
  42. This is the announcement of release 1.6. Version 1.6 is the last 
  43. public domain release. It has lost the beta.
  44.  
  45. Now that Sniff is almost finished I want to free myself from the 
  46. time consuming porting, support, and maintenance chore. For this 
  47. reason UBS cooperates with takeFive - a Salzburg based software 
  48. house - which will produce the first commercial release of Sniff 
  49. until end of year. A prerequisite for this cooperation is that 
  50. universities get further commercial releases of Sniff almost for 
  51. free and research laboratories will get Sniff at a fraction of the 
  52. commercial price.
  53.  
  54.  
  55. Supported Platforms
  56. ===================
  57.  
  58. The newest public domain release (1.6) runs on SPARCstations only. 
  59. It requires OS 4.1.2 (it is not tested under 4.1.1) and it runs 
  60. under Open Windows and X11 (olwm, mwm, and twm window managers) as 
  61. well as under SunView.
  62.  
  63. takeFive has already ported Sniff to the HP RISC and IBM RS 6000 
  64. platforms.
  65.  
  66.  
  67. How to Obtain Sniff
  68. ===================
  69.  
  70. Together with this announcement I publish release 1.6 which can be 
  71. obtained via anonymous ftp from the following two locations:
  72.  
  73. * iamsun.unibe.ch (130.92.64.10) 
  74.   /pub/Sniff1.6 or C++/Sniff1.6 directory
  75.  
  76. * self.stanford.edu (36.22.0.201 or 36.22.0.41)
  77.   /pub/sniff directory
  78.  
  79. If you have no ftp access send $80 to:
  80.  
  81. takeFive Software GesmbH
  82. Jakob-Haringer-Str. 8
  83. 5020 Salzburg
  84. Austria
  85.  
  86. Tel. 0043 662 45 79 15
  87. Fax. 0043 662 45 79 15 6
  88. email: info@takeFive.co.at
  89.  
  90. They will send you a quarter inch tape (other media on request) and 
  91. the printed documentation. For $20 you will get the printed 
  92. documentation only.
  93.  
  94.  
  95. References
  96. ==========
  97.  
  98. Sniff is already used for large scale software development at 
  99. several locations. For example:
  100.  
  101. At UBS a team of twelve software developers switched within two days 
  102. from their commercially available programming environment to the 
  103. first public domain release of Sniff. They are working on a large 
  104. portfolio management system written in C++ which interfaces with a 
  105. relational database system.
  106.  
  107. At MacDonald Dettwiler and Associates, a commercial software house, 
  108. seven developers are using Sniff on software systems with up to 
  109. 250,000 lines of source code and they are happy with Sniff's 
  110. responsiveness and user interface.
  111.  
  112.  
  113.  
  114. ************************************
  115. * Basic Concepts and Tool Overview *
  116. ************************************
  117.  
  118.  
  119. Main Tools
  120. ==========
  121.  
  122. A running version of Sniff consists of two operating system 
  123. processes, the information extractor and the programming environment 
  124. itself. The information extractor can run locally or on any node of 
  125. a network. Its task is to extract information about definitions and 
  126. declarations from the source code.
  127.  
  128. The programming environment consists of a number of tools which are 
  129. organized around a kernel consisting of the symbol table and the 
  130. project manager. Both the symbol table and the project manager 
  131. organize information in main storage, which is used by browsers and 
  132. editors.
  133.  
  134. The symbol table manages the information about symbol definitions 
  135. and declarations and the project manager manages the information 
  136. about open projects such as the source files they consist of and 
  137. various attributes.
  138.  
  139.  
  140. Information Extraction
  141. ======================
  142.  
  143. Sniff's information extractor is a fuzzy C++ parser. This means that 
  144. it understands enough about C and C++ to extract the information of 
  145. interest without having to understand C++ completely. This approach 
  146. makes it possible to parse every file only once without including 
  147. header files and expanding macros.
  148.  
  149. Not expanding macros is somewhat controversially because it could 
  150. result in a loss of information if macros are used to change C++ 
  151. syntax or semantics. Experience shows that this is no problem. Until 
  152. now no user of Sniff has informed us about macro expansion problems. 
  153. Not expanding macros means that the symbolic information corresponds 
  154. exactly to the locally visible source code. This is frequently an 
  155. advantage, for example, when macros are used to put unique prefixes 
  156. in front of all class names.
  157.  
  158. Sniff's information extractor extracts information about 
  159. declarations and definitions of C++ language elements and macros. It 
  160. does not extract information about the usage of symbols. This 
  161. information is extracted on the fly.
  162.  
  163.  
  164. Information Updating
  165. ====================
  166.  
  167. If the source code of a project is edited the information about the 
  168. location of the affected symbols is updated immediately. On saving a 
  169. file its symbolic information is extracted anew and all browsing 
  170. tools are updated. A user, therefore, works always with symbol based 
  171. tools presenting him information that correctly mirrors the source 
  172. code without ever having to bother about the effects of his changes.
  173.  
  174. Sniff can not know when a source file was changed with another tool 
  175. while its symbolic information was loaded. In this case the 
  176. developer has to tell Sniff to update its symbol table.
  177.  
  178.  
  179. Project Concept
  180. ===============
  181.  
  182. To start working with Sniff a developer has to define a project. 
  183. I.e., the source files it contains and eventually a set of 
  184. subprojects which can be shared among projects. A subproject is a 
  185. complete project on its own.
  186.  
  187. A typical project structure for a program building on a class 
  188. library is to have a root project containing the project specific 
  189. source files an to load the library project as subproject. Library 
  190. projects are frequently trees of projects themselves.
  191.  
  192. Whenever a project is opened or when a file or a subproject is 
  193. loaded into the current project its source code is analyzed and the 
  194. information about the symbols defined therein is stored in Sniff's 
  195. symbol table.
  196.  
  197.  
  198. Browsers and Editors
  199. ====================
  200.  
  201. Once a new project is defined with the Project Editor or an existing 
  202. project is opened it can be browsed and edited in different ways.
  203.  
  204. * The Symbol Browser can be used to gain an overview about which
  205.   symbols are defined in the source code or it displays the results 
  206.   of queries sent from other tools such as which symbols exist, the
  207.   names of which match "X".
  208.  
  209. * The Class Browser can be used to browse through the locally
  210.   defined and inherited members of a class.
  211.  
  212. * The Hierarchy Browser can be used to display the class graph and 
  213.   to visualize queries such as "mark all classes declaring method 
  214.   X".
  215.  
  216. * The Retriever can be used to obtain information about where a 
  217.   certain symbol is used in the source code (i.e., cross reference 
  218.   information). The Retriever is a text search based tool. It makes 
  219.   it possible to extract all occurrences of strings matching the 
  220.   name of a symbol (or any regular expression) in a set of projects.
  221.   The matches can then be further restricted with semantic filters. 
  222.   The Retriever provides therefore a much more powerful query
  223.   facility than conventional cross referencing tools.
  224.  
  225. * Sniff's comfortable mouse driven WYSIWYG Editor provides several 
  226.   kinds of browsing support and it automatically highlights 
  227.   structurally important information such as class names, method
  228.   names, and comments. Once a source file was modified it is 
  229.   possible to trigger its compilation from the editor and to mark 
  230.   the source lines where the compiler found syntax errors. The 
  231.   current version of Sniff does not provide an emacs interface. 
  232.   Because of the flood of requests we will provide emacs support 
  233.   with one of the next versions.
  234.  
  235.  
  236. Efficiency
  237. ==========
  238.  
  239. The loading of a project with 100,000 lines of code takes on a 
  240. SPARCstation2 about 20 Seconds. Sniff needs with 100,000 lines of 
  241. code loaded between 5 and 8 MB main storage (depending on how many 
  242. tools are open). For every further 100,000 lines of code 3 to 4 MB 
  243. are needed.
  244.  
  245. For a project with 100,000 lines of code Symbolic queries (e.g., 
  246. show all classes the names of which contain a certain string) can be 
  247. answered in less than a second. Cross reference queries based on 
  248. text search are answered in less than three second (once Sniff's 
  249. internal cache is loaded). The most frequent cross reference queries 
  250. are even answered in less than a second.
  251.  
  252.  
  253. *******************
  254. * Acknowledgments *
  255. *******************
  256.  
  257. My sincere thanks go to the Union Bank of Switzerland that gave me 
  258. the freedom and founding which made it possible to develop Sniff 
  259. and to distribute it in the public domain.
  260.  
  261. The development of Sniff would not have been possible without the 
  262. ET++ application framework and the support of its developers Erich 
  263. Gamma and Andre Weinand.
  264.  
  265. A good user interface has to grow. Thanks to all my colleagues who 
  266. have been working with Sniff for several months giving me the 
  267. feedback I needed.
  268.  
  269.